// FILE: IRAM.h by Richard Hughes 27/04/2012
//
// DESC: Defines the IRAM interface

#ifndef __iram_h__
#define __iram_h__

// INCLUDES
#include "Emulator.h"

// NAMESPACES
namespace Emulator
{

/*************************************************************/
//
// INTERFACE: IRAM
//
// DESC: Defines RAM
//
/*************************************************************/

class IRAM
{
public:

	virtual void Reset() = 0;

	virtual byte Read(address ad) const = 0;

	virtual void ReadBytes(uint8_t* dest, address ad, uint8_t count) = 0;

	virtual uint16_t Read16Bit(address ad) const = 0;

	virtual void Write(address ad, byte value) = 0;

	virtual void Write(byte* ads, address start, int length) = 0;

	virtual const address GetBaseWritable() const = 0;

	virtual const address GetMaxWritable() const = 0;

}; // IRAM

} // Emulator

#endif // __iram_h__

// EOF: IRaM.h